﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Kalkulator
{
    public partial class kalkulator : Form
    {
        public kalkulator()
        {
            InitializeComponent();
        }

        private enum state
        {
            tambah, kurang, kali, bagi, normal, pangkat, akar
        }

        private state st = state.normal;
        private bool isDone = false;
        Kamus rumus = new Kamus();
        private void button1_Click(object sender, EventArgs e)
        {

            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "1";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "1";
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "2";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "2";
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "3";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "3";
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "4";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "4";
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "5";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "5";
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "6";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "6";
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "7";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "7";
                
            }
        }

        private void button8_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "8";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "8";
            }
        }

        private void button9_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "9";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "9";
            }
        }

        private void button10_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (rumus.Operand2 != 0) || isDone)
            {
                textBox1.Text = "0";
                isDone = false;
            }
            else
            {
                textBox1.Text = textBox1.Text + "0";
            }
        }

        private void button12_Click(object sender, EventArgs e)
        {
            rumus.Operand1 = double.Parse(textBox1.Text);
            textBox2.Text = textBox1.Text + "+";
            textBox1.Text = "0";
            st = state.tambah;
            
        }

        private void button15_Click(object sender, EventArgs e)
        {
            rumus.Operand2 = double.Parse(textBox1.Text);
            switch (st)
            {
                case state.tambah:
                    {
                        textBox1.Text = rumus.tambah(rumus.Operand1, rumus.Operand2).ToString();
                        break;
                    }
                case state.kurang:
                    {
                        textBox1.Text = rumus.kurang(rumus.Operand1, rumus.Operand2).ToString();
                        break;
                    }
                case state.kali:
                    {
                        textBox1.Text = rumus.kali(rumus.Operand1, rumus.Operand2).ToString();
                        break;
                    }
                case state.bagi:
                    {
                        textBox1.Text = rumus.bagi(rumus.Operand1, rumus.Operand2).ToString();
                        break;
                    }


            }

            
            textBox2.Text = "";
            rumus.Operand2 = 0;
            rumus.Operand1 = 0;
            isDone = true;
        }

        private void button16_Click(object sender, EventArgs e)
        {
            rumus.Operand1 = double.Parse(textBox1.Text);
            textBox2.Text = textBox1.Text + "/";
            textBox1.Text = "0";
            st = state.bagi;
        }

        private void button13_Click(object sender, EventArgs e)
        {
            rumus.Operand1 = double.Parse(textBox1.Text);
            textBox2.Text = textBox1.Text + "-";
            textBox1.Text = "0";
            st = state.kurang;
        }

        private void button14_Click(object sender, EventArgs e)
        {
            rumus.Operand1 = double.Parse(textBox1.Text);
            textBox2.Text = textBox1.Text + "*";
            textBox1.Text = "0";
            st = state.kali;
        }

        private void button19_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            rumus.Operand2 = 0;
            rumus.Operand1 = 0;
            isDone = true;
        }

        private void button11_Click(object sender, EventArgs e)
        {
            //koma
        }

        private void button17_Click(object sender, EventArgs e)
        {
            //pangkat
            rumus.Operand1 = Double.Parse(textBox1.Text);
            textBox1.Text = rumus.pangkat(rumus.Operand1).ToString();
            isDone = true;
            
            rumus.Operand1 = 0;
        }

        private void button18_Click(object sender, EventArgs e)
        {
            //akar
            rumus.Operand1 = Double.Parse(textBox1.Text);
            textBox1.Text= rumus.akar(rumus.Operand1).ToString();
            isDone = true;
            
            rumus.Operand1 = 0;
        }

        
    }
}
